Generally, an SQL (structured query language) query processor in a relational database management system (RDBMS) processes an SQL query by using a composition of universal parameterized functions to implement different clauses of the SQL query, which are essentially operators such as, FROM (F), WHERE (W), GROUP BY (G) and SELECT (L). Further, the universal parameterized functions take input parameters based on their implementation. For example, the universal parameterized function corresponding to the F operator takes an array of relations as input parameter and the universal parameterized function corresponding to the W operator takes a relation and a filter condition as input parameters.
Existing SQL query processors model the F, W, G and L operators such that a single universal parameterized function can support any set of input parameters used with its corresponding SQL clauses. For example, the same W operator can be used with any filter condition such as, a>5, a<4 and so on, over any relational database. Thus, the universal parameterized functions are context independent. They are implementation friendly and promote code reuse, but they are not congruent with formal closure, a fundamental property of SQL queries or of relational data under SQL queries. As a result, using universal parameterized functions does not aid formal verification of SQL queries. The incongruence of the universal parameterized functions with formal closure property results in inefficient traceability of the SQL queries. Also, the above described SQL query process does not provide type safety over the input parameters and output.